<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<cpn></cpn>
			<cpn></cpn>
			<cpn ref="aaa"></cpn>
			<cpn></cpn>
			<button type="button" @click="btnClick">按钮</button>
		</div>
	</body>
	<template id="cpn">
		<div>我是子组件</div>
	</template>
	<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		const cpn = {
			template: '#cpn',
			methods:{
				showMessage(){
					console.log("showMessage");
				}
			},
			data(){
				return {
					name : "子组件"
				}
			}
		}
		const app = new Vue({
			el : "#app",
			data:{
				message : "你好啊"
			},
			methods:{
				btnClick(){
					//1. (不常用)获取子组件方法1
					// 缺点:如果需要拿到对应的组件,就要写上对应的索引,灵活性差,适用于拿到所有子组件的场景
					// 调用子组件的方法
					this.$children[0].showMessage();
					// 拿到所有的子组件
					console.log(this.$children);
					
					// 遍历打印
					for(let c of this.$children){
						console.log(c.name);
						c.showMessage();
					}
					//2. (常用)获取子组件方法2 $refs默认是空数组,必须在组件上加上属性ref才行,使用拿到单独子组件的场景
					console.log(this.$refs);
				}
			},
			components:{
				cpn
			}
		})
	</script>
</html>
